if...else
、switch
、try...catch
,變數宣告 var
、let
、const
。// statement 陳述式
let a = 123;
// expression 表達式
console.log(a);
兩者的差別就是 hoisting 的順序,在 創造階段 跟 執行階段 賦值的差別。
// 函式陳述式
function fn () {
...
}
// 函式表達式
let a = function () {
...
}
這樣的結構,稱作為 Block,而在 Block 中,可以執行其他的 陳述式 或是 表達式。
//陳述式
{
let ming = '小明';
}
還有經常看到的結構,就是 物件實字
//陳述式
{
ming: '小明'
}
這樣的結構可以利用變數賦值,相反的 Block 的結構則不行。
// X
let a = {
var b = '小明';
}
// O
let a = {
ming: '小明'
}